#ifndef MUILTIPLANT_HPP
#define MUILTIPLANT_HPP

#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
    //define something for Windows (32-bit and 64-bit, this part is common)
    #ifdef _WIN64
        #define __MP_SYS_BITS 64
        #define __MP_SYS_OS   0x0120
    #else
        #define __MP_SYS_BITS 32
        #define __MP_SYS_OS   0x0120
    #endif
#elif __APPLE__
    #include <TargetConditionals.h>
    #if TARGET_IPHONE_SIMULATOR
        #define __MP_SYS_BITS 64
        #define __MP_SYS_OS   0x0232
         // iOS Simulator
    #elif TARGET_OS_IPHONE
        #define __MP_SYS_BITS 64
        #define __MP_SYS_OS   0x0231
        // iOS device
    #elif TARGET_OS_MAC
        #define __MP_SYS_BITS 64
        #define __MP_SYS_OS   0x0230
        // Other kinds of Mac OS
    #else
        #error "Unknown Apple platform"
    #endif
#elif __linux__
    #if __SIZEOF_SIZE_T__ == 8
        #define __MP_SYS_BITS 64
        #define __MP_SYS_OS   0x0220
    #else
        #define __MP_SYS_BITS 32
        #define __MP_SYS_OS   0x0220
    #endif
    // linux
#elif __unix__ // all unices not caught above
    #if __SIZEOF_SIZE_T__ == 8
        #define __MP_SYS_BITS 64
        #define __MP_SYS_OS   0x0200
    #else
        #define __MP_SYS_BITS 32
        #define __MP_SYS_OS   0x0200
    #endif
    // Unix
#elif defined(_POSIX_VERSION)
    #if __SIZEOF_SIZE_T__ == 8
        #define __MP_SYS_BITS 64
        #define __MP_SYS_OS   0x0000
    #else
        #define __MP_SYS_BITS 32
        #define __MP_SYS_OS   0x0000
    #endif
    // POSIX
#else
    #error "Unknown compiler"
#endif

#endif
